package com.onecar.carplatform.jtt.utils;

import io.netty.buffer.ByteBuf;

public class JttUtils {

    /**
     * 计算异或校验和
     *
     * @param buf 要计算的 ByteBuf
     * @return 异或校验和
     */
    public static byte calculateXorCheckCode(ByteBuf buf) {
        return calculateXorCheckCode(buf, buf.readerIndex(), buf.writerIndex());
    }

    /**
     * 计算异或校验和
     *
     * @param buf   要计算的 ByteBuf
     * @param start 起始位置
     * @param end   结束位置
     * @return 异或校验和
     */
    public static byte calculateXorCheckCode(ByteBuf buf, int start, int end) {
        byte sum = buf.getByte(start);
        for (int i = start + 1; i < end; i++) {
            sum = (byte) (sum ^ buf.getByte(i));
        }
        return sum;
    }
}
